package com.cy.pj.sys.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cy.pj.common.bo.PageObject;
import com.cy.pj.common.exception.ServiceException;
import com.cy.pj.sys.Dao.SysLogDao;
import com.cy.pj.sys.pojo.SysLog;
import com.cy.pj.sys.service.SysLogService;

import lombok.extern.slf4j.Slf4j;
@Slf4j
@Service
public class SysLogServiceImpl implements SysLogService {
	
	@Autowired
	private SysLogDao sysLogDao;
	
	@Override
	public PageObject<SysLog> findPageObjects(String username, Integer pageCurrent) {
		//1.验证参数合法性
		//1.1验证pageCurrent的合法性，
		//不合法抛出IllegalArgumentException异常
		if(pageCurrent==null||pageCurrent<1)
		throw new IllegalArgumentException("当前页码不正确");
		//2.基于条件查询总记录数
		//2.1)执行查询
		int rowCount=sysLogDao.getRowcount(username);
		//2.2)验证查询结果,假如结果为0不再执行如下操作
		if(rowCount==0)
			//为了 对业务中的信息进行更好的反馈和定位,通常会自定义异常
		throw new ServiceException("系统没有查到对应记录");
		//3.基于条件查询当前页记录 pageSize定义为2
		//3.1)定义pageSize
		int pageSize=3;//每页最多显示多少条记录
		//3.2)计算startIndex 当前页码-1 * 
		int startIndex=(pageCurrent-1)*pageSize;
		//3.3)执行当前数据的查询操作
		List<SysLog> records=sysLogDao.findPageObject(username, startIndex, pageSize);
		
//		//4.2)封装数据
//		PageObject<SysLog> pageObject=new PageObject<>();
//		pageObject.setPageCurrent(pageCurrent);
//		  pageObject.setPageSize(pageSize);
//		  pageObject.setRowCount(rowCount);
//		  pageObject.setRecords(records);
//         pageObject.setPageCount((rowCount-1)/pageSize+1);
//         int pageCount=rowCount/pageSize;
//         if(rowCount%pageSize!=0)pageCount++;
//         //5.返回封装结果
		return new PageObject<>(pageCurrent,pageSize,rowCount,records);
	}

	@Override
	public int deleteObjects(Integer... ids) {
		//1.参数校验
		if(ids==null||ids.length==0) {
			throw new IllegalArgumentException("参数值无效");
		}
		//2.执行删除
		int rows = sysLogDao.deleteObjects(ids);
		//3.验证结果
		if(rows==0) {
			throw new ServiceException("记录不存在");
		}
		return rows;
	}

	@Override
	public void saveObject(SysLog entity) {
		sysLogDao.insertObject(entity);
		
	}

	

}
